使用 mipmap

使用 mipmap 从一个较大的纹理创建一组缩小的子级。Mipmap 使 GPU 内存使用增加三分之一,但提高了无需对整个纹理进行采样时的性能。缩放纹理节点时,请务必使用 mipmap 来提高性能。

例如,256x256 像素纹理具有 mipmap 级别,可以将纹理缩小至 128x128、64x64 等等,最小可缩小至 1x1 像素。性能会得到提高,原因在于 mipmap 级别越低,越适合 GPU 中具有固定大小的纹理缓存。

您在第三方工具中创建 mipmap 并将其包含在 .dds 文件中时,Kanzi Studio 提取 mipmap 级别的图像并使用它们。

避免从 .jpeg 纹理创建 mipmap,因为 .jpeg 图像格式会导致 mipmap 的质量下降。

为纹理生成 mipmap

当导入不含 mipmap 的图像时,您可以在 Kanzi Studio 中从该图像生成纹理的 mipmap。

要为纹理生成 mipmap:

  1. 素材库 (Library) 中点击资源文件 (Resource Files) > 图像 (Images),并选择您要为其创建 mipmap 的图像。
    避免从 .jpeg 纹理创建 mipmap,因为 .jpeg 图像格式会导致 mipmap 的质量下降。
  2. 属性 (Properties) 中启用生成 Mipmap (Generate Mipmaps) 属性。
  3. 素材库 (Library) > 材质和纹理 (Materials and Textures) > 纹理 (Textures) 中选择您想要使用该图像为其生成 mipmap 的纹理,并在属性 (Properties) 中将Mipmap 模式 (Mipmap Mode) 属性设为线性 (Linear)最近点 (Nearest) 以便应用 mipmap。请参阅过滤纹理
  4. 您在导出工程的 kzb 文件并且 Kanzi Studio 询问您是否要对图像进行预处理时,点击是 (Yes)
    如果您不在 Kanzi Studio 中处理文件,Kanzi Engine 会在加载您的目标设备上的应用程序时生成 mipmap。这会增加您的应用程序的加载时间。

    Kanzi 无法为使用 ASTC、ATC、ETC 或 PVRTC 压缩的图像生成 mipmap。

    建议

    要手动为图像生成 mipmap,在素材库 (Library) 中右键点击您要为其创建 mipmap 的图像并选择预处理图像 (Preprocess images)

为合成目标创建 mipmap

当您使用合成目标渲染通道 (Composition Target Render Pass) 渲染 3D 内容时,可以为合成目标创建 mipmap。例如,用它创建可快速渲染的低质量模糊效果。

这个过程解释如何为 Kanzi 自动创建的合成目标创建 mipmap。要为渲染目标纹理 (Render Target Texture) 创建 mipmap,请参阅为渲染目标纹理 (Render Target Texture)创建 mipmap

要为合成目标创建 mipmap:

  1. 创建您需要将内容渲染成合成目标的渲染通道。请参阅将内容渲染成合成目标

  2. 素材库 (Library) > 渲染 (Rendering) > 渲染通道 (Render Passes) 中选择 合成目标渲染通道 (Composition Target Render Pass) 节点,在属性 (Properties) 中添加 Mipmap 模式 (Mipmap Mode) 属性,将其设为线性 (Linear)最近点 (Nearest)。请参阅过滤纹理
    Kanzi 会在您渲染合成目标时生成 mipmap。

渲染目标纹理 (Render Target Texture)创建 mipmap

您可以为您使用合成目标渲染通道 (Composition Target Render Pass) 为其渲染 3D 内容的渲染目标纹理 (Render Target Texture) 创建 mipmap。例如,用它创建可快速渲染的低质量模糊效果。

要为渲染目标纹理 (Render Target Texture)创建 mipmap:

  1. 素材库 (Library) > 渲染 (Rendering) > 渲染通道 (Render Passes) 中创建一个 渲染到纹理通道 (Render to Texture Pass)
    渲染到纹理通道 (Render to Texture Pass) 会创建您渲染到纹理时所需的渲染通道和纹理。请参阅渲染到纹理
  2. 工程 (Project) 中选择您要将其内容渲染成纹理的场景 (Scene) 节点,并在属性 (Properties) 中将渲染通道 (Render Pass) 属性设置为您在上一步中创建的渲染到纹理通道 (Render to Texture Pass)
    Kanzi 现在使用您创建的渲染通道渲染 场景 (Scene)
  3. 素材库 (Library) 中选择您创建的渲染到纹理通道 (Render to Texture Pass),在属性 (Properties) 中点击合成目标 (Composition Target) 属性旁的 以转至渲染目标纹理 (Render Target Texture) 资源,然后将Mipmap 模式 (Mipmap Mode) 属性设置为线性 (Linear)最近点 (Nearest)。请参阅过滤纹理
  4. 素材库 (Library) 中选择您创建的渲染到纹理通道 (Render to Texture Pass) 并在属性 (Properties) 中添加并启用立即解决 (Resolve Immediately) 属性。
    在您启用立即解决 (Resolve Immediately) 属性后,Kanzi 会解析多重采样并在渲染纹理后立即为渲染目标纹理 (Render Target Texture) 生成 mipmap。如果您不启用立即解决 (Resolve Immediately) 属性,Kanzi 仅在您使用另一渲染通道引用渲染到纹理通道 (Render to Texture Pass) 时生成 mipmap。
  5. 在您想要显示 3D 内容的节点中使用 渲染目标纹理 (Render Target Texture)。请参阅使用渲染目标纹理

渲染目标纹理 (Render Target Texture) 创建自定义 mipmap 级别

当您在 3D 几何形状上使用 渲染目标纹理 (Render Target Texture),可以使用旧渲染通道(已停用)(Legacy Render Pass, deprecated) 资源为渲染目标纹理 (Render Target Texture) 创建自定义 mipmap 级别。

要为渲染目标纹理 (Render Target Texture) 创建自定义 mipmap 级别:

  1. 点击素材库 (Library) > 材质和纹理 (Materials and Textures) > 纹理 (Textures)并选择要为其生成 mipmap 的渲染目标纹理 (Render Target Texture),并在属性 (Properties)中将Mipmap 模式 (Mipmap Mode)属性设置为线性 (Linear)最近点 (Nearest)。请参阅过滤纹理
  2. 要为每个 mipmap 级别创建自定义 mipmap,点击素材库 (Library) > 渲染 (Rendering) > 渲染通道 (Render Passes),为每个 mipmap 级别创建一个旧渲染通道(已停用)(Legacy Render Pass, deprecated),并将Mipmap 级别 (Mipmap Level) 属性设置为您要在其中使用旧渲染通道(已停用)(Legacy Render Pass, deprecated) 结果的 mipmap 级别。
    例如,如果您的渲染目标纹理 (Render Target Texture) 测量 512 X 512 像素,以创建所有 mipmap 级别,您需要十个旧渲染通道(已停用)(Legacy Render Pass, deprecated) 渲染通道。对于渲染 mipmap 的旧渲染通道(已停用)(Legacy Render Pass, deprecated),纹理大小将Mipmap 级别 (Mipmap Level) 属性设置为 0,对于渲染下一个 mipmap 级别(256 X 256像素)的旧渲染通道(已停用)(Legacy Render Pass, deprecated),将Mipmap 级别 (Mipmap Level) 属性设置为 1,以此类推直至 mipmap 测量到 1 X 1 像素。

另请参阅

调整数据大小

并行加载资源

压缩纹理

过滤纹理

排除应用程序的性能问题

图像和纹理最佳实践

最佳实践

将内容渲染成合成目标